package com.zmn.oms.common.discount.interfaces;

import com.zmn.oms.common.discount.dto.CalculateDiscountListDTO;
import com.zmn.oms.common.discount.dto.CalculateDiscountResultDTO;
import com.zmn.oms.common.dto.ResultDTO;

import java.util.List;

/**
 * 类描述：优惠计算规则
 *
 * @author heciqi
 * @date 2018/12/07 12:03
 */
public interface DiscountCalculateRuleService {

	/**
	 * 是否能优惠
	 * @param origDiscounts 优惠列表
	 * @return
	 */
	ResultDTO canDiscount(List<CalculateDiscountListDTO> origDiscounts);

	/**
	 * 计算优惠金额
	 * @param origDiscounts 原有优惠列表
	 * @param initialAmount 初始金额（在该金额基础上计算优惠）
	 * @param calculator 回调实现各自计算
	 * @return 返回计算模型
	 */
	CalculateDiscountResultDTO calculate(List<CalculateDiscountListDTO> origDiscounts, Integer initialAmount, DiscountCalculator calculator);
}
